/**
  描述
    现有n种砝码，重量互不相等，分别为 m1,m2,m3…mn ；
    每种砝码对应的数量为 x1,x2,x3...xn 。现在要用这些砝码去称物体的重量(放在同一侧)，问能称出多少种不同的重量。
    注：
    称重重量包括 0

    输入描述：
    对于每组测试数据：
    第一行：n --- 砝码的种数(范围[1,10])
    第二行：m1 m2 m3 ... mn --- 每种砝码的重量(范围[1,2000])
    第三行：x1 x2 x3 .... xn --- 每种砝码对应的数量(范围[1,10])
    输出描述：
    利用给定的砝码可以称出的不同的重量数


  输入：
    2
    1 2
    2 1
  输出：
    5
  说明：
    可以表示出0，1，2，3，4五种重量。
*/

// const readline = require('readline')
// const rl = readline.createInterface({
//   input:process.stdin,
//   output:process.stdout
// })


function transform(inputArr) {
  const heavy = inputArr[1].split(' ')
  const count = inputArr[2].split(' ')
  if (Number(inputArr[0]) !== heavy.length) return
  let weight = []
  const resSet = new Set()
  resSet.add(0)
  // 得到所有重量的砝码
  heavy.forEach((hy, idx) => {
    weight = weight.concat(new Array(Number(count[idx])).fill(Number(hy)))
  })
  let tempSet = []
  weight.forEach((wg) => {
    tempSet = Array.from(resSet)
    tempSet.forEach((setItem) => {
      resSet.add(setItem + wg)
    })
  })
  console.log(Array.from(resSet).length)
}

// 本地测试
let inputArr = [10, '2000 1999 1998 1997 1996 1995 1994 1993 1992 1991', '10 10 10 10 10 10 10 10 10 10']
transform(inputArr)

// 提交测试
// const inputLine = []
// rl.on('line', (line) => {
//   inputLine.push(line)
//   if (inputLine.length === 3) {
//     transform(inputLine)
//   }
// })